﻿/////////////////////////////////////////////////////////////////////////////////
///              ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO                   ///
///                        PROYECTO INTEGRADOR IV                            /// 
///                         PROYECTO SICOPS 2011                              /// 
/// ------------------------------------------------------------------------- ///  
///              **********GRUPO DE DESARROLLADORES**********                 ///
///                 ************PEGASO COMPANY**************                    /// 
///---------------------------------------------------------------------------///
///                                                         RIOBAMBA-ECUADOR  ///
///---------------------------------------------------------------------------///
///                FORMULARIO DE INGRESO PRODUCTOS                    ///
///---------------------------------------------------------------------------///
///Permite el ingreso de los diversos productos necesarios                ///
///                                              Responsable:  Pineda Marco   ///
/////////////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogisticaDeAcceso;


//Formulario para el registro de bienes
namespace Aplicacion.Formularios
{
    public partial class frmBienes : Form
    {
        private string vargCodigo;//variable en que se almacena el codigo generado
        private bool varBandera = true;//variable utilizada por el ontrolador de espacios
        private string varConexion;//Variable con la direccion de coneccion, el nombre del base de datos y la cuenta de acceso

        //Inicio de la sobrecarga de asignacion de variables
        public frmBienes()
        {
            InitializeComponent();
        }

        public frmBienes(string Con)
        {
            InitializeComponent();
            varConexion = Con;
        }    
        /// /////////////////////////////////////////////////////////////////////
       
        //Comprobar si existe la clave asignada
        private string metExisteClave()
        {
            //metodo que reorna un si o un no para verrificar si la clave ya esta asignada
            //para que no exista conflicto en la inserccion
            string Exis = "";
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            Exis = auxCom.metExisteClaveBienes(varConexion, vargCodigo);
            return Exis;
            
        }
        //Asignacion para el registro de la clave del bien
        private void metAsignacionCodigo(string varGrupo, int numCas)
        {           

            if (txtNum4.Text == "DEF")//Verifica en que casillero tiene que generarce el numero de la clave 
            {
                vargCodigo = string.Concat(txtNum1.Text, ".", txtNum2.Text, ".", txtNum3.Text, ".", numCas.ToString());
                if (metExisteClave() == "SI")//llamado al procedimiento para verificar si la clave existe o no
                {
                    numCas = numCas + 1;
                    txtNum4.Text = "DEF";
                    metAsignacionCodigo(cmbGrupoPR.Text, numCas);//Si la clave ya existe se le suma uno y se la vuelve a invocar
                    txtNum4.Text = numCas.ToString();

                }
                else
                    txtNum4.Text = numCas.ToString();//Si no existe se le registra en el casillero y ya esta listo para insertar el producto
            }
            else
            {
                if (txtNum5.Text == "DEF")// para el segundo DEF Verifica en que casillero tiene que generarce el numero de la clave
                {
                    vargCodigo = string.Concat(txtNum1.Text, ".", txtNum2.Text, ".", txtNum3.Text, ".", txtNum4.Text, ".", numCas.ToString());
                    if (metExisteClave() == "SI")//llamado al procedimiento para verificar si la clave existe o no
                    {
                        numCas = numCas + 1;
                        txtNum5.Text = "DEF";
                        metAsignacionCodigo(cmbGrupoPR.Text, numCas);//Si la clave ya existe se le suma uno y se la vuelve a invocar
                        txtNum5.Text = numCas.ToString();

                    }
                    else
                        txtNum5.Text = numCas.ToString(); //Si no existe se le registra en el casillero y ya esta listo para insertar el producto
                }
                else
                {
                    if (txtNum6.Text == "DEF")//para el tercer DEF //Verifica en que casillero tiene que generarce el numero de la clave
                        {
                        vargCodigo = string.Concat(txtNum1.Text, ".", txtNum2.Text, ".", txtNum3.Text, ".", txtNum4.Text, ".", txtNum5.Text, ".", numCas.ToString());
                        if (metExisteClave() == "SI")//llamado al procedimiento para verificar si la clave existe o no
                        {
                            numCas = numCas + 1;
                            txtNum6.Text = "DEF";
                            metAsignacionCodigo(cmbGrupoPR.Text, numCas);//Si la clave ya existe se le suma uno y se la vuelve a invocar
                            txtNum6.Text = numCas.ToString();
                        }
                        else
                            txtNum6.Text = numCas.ToString(); //Si no existe se le registra en el casillero y ya esta listo para insertar el producto
                        }
                }
            }
        
        }

        ////////////////Metodo de asignacion de Codigo para el grupo seleccionado con un numero de bienes registrados en el mismo
     
        private void metGenerarClaveP()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            int numCas = auxCom.metContarBienes(varConexion, cmbGrupoPR.Text);
           //En esta parte del codigo se genera un codigo para cada una de los grupos de productos existentes
        switch(cmbGrupoPR.Text)
        {
            case "MUEBLES DE OFICINA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE USO EDUCACIONAL":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "03";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE USO RECREATIVO Y DEPORTIVO":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "05";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE COCINA COMEDOR Y SALA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "07";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE PARVULARIO":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "09";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE DORMITORIO":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "11";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES DE ALMACEN, BODEGA, TALLERES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "13";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MUEBLES NO ESPECIFICADOS":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "17";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "VAJILLA Y MENAJE":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "21";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "BIENES NO ESPECIFICADOS":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "01";
                    txtNum5.Text = "29";
                    txtNum6.Text = "DEF";
                    break;
                }
       
            case "EQUIPO PARA OFICINA Y ADMINISTRACION":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "31";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO RECREATIVO Y DEPORTIVO":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "35";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO E INSTRUMENTOS MUSICALES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "36";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "HARDWARE":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "07";
                    txtNum4.Text = "01";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO PARA IMPRENTA Y PUBLICIDAD":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "39";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO PARA PRENSA, CINE, RADIO Y TV.":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "41";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPOS PARA LABORATORIO, CIENCIA Y ENSE":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "45";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO DE LIMPIEZA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "47";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO NO ESPECIFICADO":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "49";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "VEHICULOS DE TRANSPORTE TERRESTRE":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "05";
                    txtNum4.Text = "01";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO GASOLINERA POLITECNICA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "09";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MAQUINARIA AGRICOLA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "01";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MAQUINARIA INDUSTRIAL":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "01";
                    txtNum5.Text = "03";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "MAQUINARIA PARA LA CONSTRUCCION":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "01";
                    txtNum5.Text = "05";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO AGRICOLA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "02";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO INDUSTRIAL":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "02";
                    txtNum5.Text = "03";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO PARA MEDICINA, SANIDAD Y VETERINA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "02";
                    txtNum5.Text = "11";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPOS ELECTRICOS/ ELECTRONICOS/ TELECOMUNICACIONES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "02";
                    txtNum5.Text = "13";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "EQUIPO BELICO Y DE SEGURIDAD PUBLICA":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "04";
                    txtNum4.Text = "02";
                    txtNum5.Text = "15";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "HERRAMIENTAS PARA MUEBLES Y EQUIPOS":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "06";
                    txtNum4.Text = "01";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "HERRAMIENTAS  Y ACCESORIOS DE VEHICULOS":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "05";
                    txtNum4.Text = "01";
                    txtNum5.Text = "07";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "GANADO MAYOR":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "05";
                    txtNum3.Text = "01";
                    txtNum4.Text = "DEF";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "GANADO MENOR":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "05";
                    txtNum3.Text = "02";
                    txtNum4.Text = "DEF";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "ANIMALES ESPECIALES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "05";
                    txtNum3.Text = "03";
                    txtNum4.Text = "DEF";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "BIENES CULTURALES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "08";
                    txtNum4.Text = "02";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "PLANTA DE BALANCEADOS":
                {
                    txtNum1.Text = "151";
                    txtNum2.Text = "51";
                    txtNum3.Text = "10";
                    txtNum4.Text = "03";
                    txtNum5.Text = "01";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "PLANTA DE CARNICOS":
                {
                    txtNum1.Text = "151";
                    txtNum2.Text = "51";
                    txtNum3.Text = "10";
                    txtNum4.Text = "03";
                    txtNum5.Text = "02";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "PLANTA DE LACTEOS":
                {
                    txtNum1.Text = "151";
                    txtNum2.Text = "51";
                    txtNum3.Text = "10";
                    txtNum4.Text = "03";
                    txtNum5.Text = "03";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "PISCINA OLIMPICA":
                {
                    txtNum1.Text = "151";
                    txtNum2.Text = "51";
                    txtNum3.Text = "99";
                    txtNum4.Text = "29";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";

                    break;
                }
            case "HERRAMIENTAS MENORES":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "06";
                    txtNum4.Text = "01";
                    txtNum5.Text = "06";
                    txtNum6.Text = "DEF";
                    break;
                }

            case "EQUIPO EDUCACIONAL":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "03";
                    txtNum4.Text = "02";
                    txtNum5.Text = "51";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "SOFTWARE":
                {
                    txtNum1.Text = "141";
                    txtNum2.Text = "01";
                    txtNum3.Text = "07";
                    txtNum4.Text = "02";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }
            case "LINEAS REDES DE TELECOMUNICACIONES":
                {
                    txtNum1.Text = "151";
                    txtNum2.Text = "54";
                    txtNum3.Text = "02";
                    txtNum4.Text = "DEF";
                    txtNum5.Text = "DEF";
                    txtNum6.Text = "DEF";
                    break;
                }      

        }
        metAsignacionCodigo(cmbGrupoPR.Text,numCas);//llamado al metodo que asigna un codigo
        }

        private void comGrupoPR_SelectedValueChanged(object sender, EventArgs e)
        {
            metGenerarClaveP();//dependiendo del grupo cuenta y asigna una clave principal para el ingreso
            metVacio();//Controla casilleros vacios
        }

        private void btnGuardarPR_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea continuar con el ingreso del bien actual?", "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                //Ingresa los datos ya validados en la base de datos
                Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
                auxCom.metRegistrarBien(varConexion, vargCodigo, txtDetallePR.Text, cmbGrupoPR.Text, cmbTipoPR.Text);
                btnNuevoPR.Enabled = true;
                btnGuardarPR.Enabled = false;
                txtDetallePR.Focus();
                grpProducto.Enabled = false;
            }
        }

        private void textDetallePR_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)//Verifica un enter presionado
                cmbGrupoPR.Focus();//Da un salto de foco
        }

        private void comGrupoPR_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)//Verifica un enter presionado
                cmbTipoPR.Focus();//Da un salto de foco
        }

        private void textDetallePR_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metControlarEspacios(e, varBandera);//Controla que el ingreso sea de numeros o de letras
            varBandera = auxFrm.metPrecionarEspacio(e, varBandera);//Control de espacios para que ingresen mas de un espacio
            metVacio();//Controla casilleros vacios
        }

        private void comGrupoPR_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;//Impide que se escriba en los combo box
        }

        private void metVacio()
            //metodo que controla que existan datos
    {
        if (txtDetallePR.Text.Length >= 3 && cmbGrupoPR.Text.Length > 5)
            btnGuardarPR.Enabled = true;
        else
            btnGuardarPR.Enabled = false;
    
    }

        private void btnNuevoPR_Click(object sender, EventArgs e)
        {
            btnNuevoPR.Enabled = false;
            txtDetallePR.Clear();
            txtDetallePR.Focus();
            btnGuardarPR.Enabled = false;
            metGenerarClaveP();//ppara una nueva generacion de claves actulizamos el generador de claves
            grpProducto.Enabled = true;
        }

        private void comTipoPR_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                metVacio();//Si esta todo validado se activa el boton de guardar
                btnGuardarPR.PerformClick();//Sin no se a validado algo no se activa el boton 
            }

        }
             
        //Llamado al metodo para modificar los datos de los bienes registrados
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Aplicacion.Formularios.frmModificarProducto auxFrm = new frmModificarProducto(varConexion);
            auxFrm.ShowDialog();
        }

        private void frmBienes_Load(object sender, EventArgs e)
        {

        }

    }
}
